Video coding an image generally consists in effecting on that image operations known as compression, with the aim of facilitating the transmission of the image over telecommunications networks by reducing the quantity of data to be transmitted, at the same time as attempting to obtain a final reproduced image of the best possible quality.
Interframe image coding essentially consists in establishing the difference between a current image and an image predicted from preceding images. Only the difference is transmitted, which represents a high level of compression since the quantity of data to be transmitted is considerably reduced.
In intraframe coding the video image is coded with respect to itself, with no reference and no comparison with other images, in particular with preceding images.
In a video call, intraframe coding is necessary for initialization and synchronization and has the particular feature of limiting the dependency of an image block to adjacent blocks only. This form of coding has the advantage of being robust. However, it has the disadvantage that image compression is not so good.
In recent coding standards, such as the ITU-T standard H.264 (ISO/IEC/JTC1 standard MPEG-4 AVC), intraframe block coding relies on prediction relative to adjacent picture elements (pixels). The prediction of a block leads to the construction of a virtual block for the current block, comparing the virtual block with the current block determines the difference between the virtual block and the current block, and the difference is transmitted over the network accompanied by additional data enabling the block to be reconstituted from this difference. Appropriate processing by the receiver reconstitutes the video image by applying the difference transmitted to the virtual block reconstructed by means of this additional data. Intraframe coding therefore has the same advantage of better compression as interframe coding.
To improve intraframe coding, prediction directions are defined that are used to interpolate the pixels of an adjacent block to predict the current block, i.e. to construct a virtual block associated with each prediction direction, and the virtual block that compares best with the current block determines the difference to be transmitted over the network. In other words, each prediction direction is associated with a different processing algorithm yielding a different virtual block. There are therefore as many virtual blocks for the same current block as there are prediction directions. Of course, the prediction direction chosen is that which minimizes the quantity of data to be transmitted at the same time as keeping the best possible quality, in other words, the direction that achieves the best quality/compression trade-off.
A conventional method of enabling the coder to decide on the best prediction direction systematically calculates all the virtual blocks for all possible prediction directions and then compares all these virtual blocks with the current block to determine the direction that gives the smallest difference between the associated virtual block and the current block.
However, because of its complexity, entailing calculating all the necessary interpolations for calculating all the virtual blocks, this method proves very costly in terms of computation time.